package com.mhr.ai.cr.provider

import com.mhr.ai.cr.model.AIReviewResult

/**
 * AI 提供商抽象接口
 * 定义所有AI提供商需要实现的基本功能
 */
interface AIProvider {
    
    /**
     * 提供商名称
     */
    val providerName: String
    
    /**
     * 支持的模型列表
     */
    fun getSupportedModels(): List<AIModel>
    
    /**
     * 验证配置是否有效
     */
    fun isConfigValid(config: AIProviderConfig): Boolean
    
    /**
     * 调用AI模型进行代码审核
     */
    fun reviewCode(
        prompt: String,
        config: AIProviderConfig
    ): String
    
    /**
     * 测试连接
     */
    fun testConnection(config: AIProviderConfig): Boolean
}

/**
 * AI模型信息
 */
data class AIModel(
    val id: String,
    val displayName: String,
    val description: String = "",
    val maxTokens: Int = 4000,
    val supportedFeatures: Set<String> = emptySet()
)

/**
 * AI提供商配置
 */
data class AIProviderConfig(
    val apiKey: String,
    val model: String,
    val temperature: Float = 0.7f,
    val maxTokens: Int = 2000,
    val timeout: Int = 30,
    val baseUrl: String? = null,
    val extraParams: Map<String, Any> = emptyMap()
)